1
局部物件生命週期:自動與靜態對比
AI037Lesson 10
00:00

在 C++ 的劇場中,每個物件都有其生命週期—— 物件生命週期。這定義了物件在記憶體中佔用空間的時間長度。在 函式主體中,預設行為是 局部變數自動,但我們可以命令它們成為 靜態 以改變它們的命運。

1. 自動物件

預設情況下,局部變數是 自動物件。它們在 函式 執行到其定義時誕生(初始化),並在程式碼區塊結束時死亡(被回收)。它們位於堆疊上,因此每次呼叫都會產生全新的實例。

2. 局部靜態物件

當您使用 靜態 關鍵字時,就會建立一個 局部靜態物件。這些物件僅初始化一次——在第一次控制流經其定義之前——並一直存活至程式的終止。這使得函式能「記住」狀態,而不會污染全域範圍。

堆疊(自動)[ temp_val ]在區塊結尾時銷毀資料段(靜態)[ persistent_val ]持續到程式退出

3. 遞迴陷阱

在一個 遞迴函式中,每一次 遞迴循環 都會創建其自動物件的一個獨立實例。如果遞迴層次很深,這將消耗大量堆疊空間。相反地,一個 靜態 物件會在該遞迴的所有層級之間共享。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>